<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
      .node:hover path,
      .node.current path,
      .node:active polygon,
      .node:hover polygon,
      .node.current polygon {
        stroke: fuchsia;
        stroke-width: 2;
      }
      .edge:active path,
      .edge:hover path,
      .edge.current path,
      .edge:active ellipse,
      .edge:hover ellipse,
      .edge.current ellipse {
        stroke: fuchsia;
        stroke-width: 3;
        stroke-opacity: 1;
      }
      .edge:active polygon,
      .edge:hover polygon,
      .edge.current polygon {
        stroke: fuchsia;
        stroke-width: 3;
        fill: fuchsia;
        stroke-opacity: 1;
        fill-opacity: 1;
      }
      .edge:active text,
      .edge:hover text {
        fill: fuchsia;
      }
      .cluster path {
        stroke-width: 3;
      }
      .cluster:active path,
      .cluster:hover path {
        fill: #ffff0011;
      }
      div.hint {
        background-color: #000000aa;
        color: white;
        font-family: Arial, Helvetica, sans-serif;
        border-radius: 1rem;
        position: fixed;
        top: calc(50% - 4em);
        right: calc(50% - 10em);
        border: none;
        padding: 1em 3em 1em 1em;
      }
      .hint button {
        position: absolute;
        font-weight: bolder;
        right: 0.6em;
        top: 0.6em;
        color: inherit;
        background-color: inherit;
        border: 1px solid currentColor;
        border-radius: 1em;
        margin-left: 0.6em;
      }
      .hint a {
        color: inherit;
      }
      #button_help {
        color: white;
        background-color: #00000011;
        border-radius: 1em;
        position: fixed;
        top: 1em;
        right: 1em;
        font-size: 24pt;
        font-weight: bolder;
        width: 2em;
        height: 2em;
        border: none;
      }
      #button_help:hover {
        cursor: pointer;
        background-color: #00000077;
      }
      @media print {
        #button_help {
          display: none;
        }
        div.hint {
          display: none;
        }
      }
    </style>
  </head>
  <body>
    <button id="button_help">?</button>
    <div id="hints" class="hint" style="display: none">
      <button id="close-hints">x</button>
      <span id="hint-text"></span>
      <ul>
        <li><b>Hover</b> - highlight</li>
        <li><b>Right-click</b> - pin highlight</li>
        <li><b>ESC</b> - clear</li>
      </ul>
    </div>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 3.0.0 (20220226.1711)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="1010pt" height="934pt"
 viewBox="0.00 0.00 1010.00 934.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 930)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-930 1006,-930 1006,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_packages</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M20,-8C20,-8 982,-8 982,-8 988,-8 994,-14 994,-20 994,-20 994,-906 994,-906 994,-912 988,-918 982,-918 982,-918 20,-918 20,-918 14,-918 8,-912 8,-906 8,-906 8,-20 8,-20 8,-14 14,-8 20,-8"/>
<text text-anchor="middle" x="501" y="-906.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">packages</text>
</g>
<!-- packages/acceptance&#45;tests -->
<g id="node1" class="node">
<title>packages/acceptance&#45;tests</title>
<g id="a_node1"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/acceptance-tests" xlink:title="acceptance&#45;tests">
<polygon fill="#ccccff" stroke="black" points="351.5,-692 267.5,-692 265.5,-690 265.5,-674 349.5,-674 351.5,-676 351.5,-692"/>
<polyline fill="none" stroke="black" points="349.5,-690 265.5,-690 "/>
<polyline fill="none" stroke="black" points="349.5,-690 349.5,-674 "/>
<polyline fill="none" stroke="black" points="349.5,-690 351.5,-692 "/>
<text text-anchor="start" x="273.5" y="-680.8" font-family="Helvetica,sans-Serif" font-size="9.00">acceptance&#45;tests</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;fslib -->
<g id="node2" class="node">
<title>packages/yarnpkg&#45;fslib</title>
<g id="a_node2"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-fslib" xlink:title="yarnpkg&#45;fslib">
<polygon fill="#ccffcc" stroke="black" points="892,-420 825,-420 823,-418 823,-402 890,-402 892,-404 892,-420"/>
<polyline fill="none" stroke="black" points="890,-418 823,-418 "/>
<polyline fill="none" stroke="black" points="890,-418 890,-402 "/>
<polyline fill="none" stroke="black" points="890,-418 892,-420 "/>
<text text-anchor="start" x="831" y="-408.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;fslib</text>
</a>
</g>
</g>
<!-- packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge1" class="edge">
<title>packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M351.7,-687.2C484.36,-687.2 877,-687.2 877,-687.2 877,-687.2 877,-426.19 877,-426.19"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="879.1,-426.19 877,-420.19 874.9,-426.19 879.1,-426.19"/>
</g>
<!-- packages/yarnpkg&#45;parsers -->
<g id="node3" class="node">
<title>packages/yarnpkg&#45;parsers</title>
<g id="a_node3"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-parsers" xlink:title="yarnpkg&#45;parsers">
<polygon fill="#ccffcc" stroke="black" points="899,-765 818,-765 816,-763 816,-747 897,-747 899,-749 899,-765"/>
<polyline fill="none" stroke="black" points="897,-763 816,-763 "/>
<polyline fill="none" stroke="black" points="897,-763 897,-747 "/>
<polyline fill="none" stroke="black" points="897,-763 899,-765 "/>
<text text-anchor="start" x="824" y="-753.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;parsers</text>
</a>
</g>
</g>
<!-- packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge2" class="edge">
<title>packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M351.5,-689.6C474.33,-689.6 818,-689.6 818,-689.6 818,-689.6 818,-740.77 818,-740.77"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="815.9,-740.77 818,-746.77 820.1,-740.77 815.9,-740.77"/>
</g>
<!-- packages/yarnpkg&#45;core -->
<g id="node4" class="node">
<title>packages/yarnpkg&#45;core</title>
<g id="a_node4"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-core" xlink:title="yarnpkg&#45;core">
<polygon fill="#ccffcc" stroke="black" points="448.5,-382 379.5,-382 377.5,-380 377.5,-364 446.5,-364 448.5,-366 448.5,-382"/>
<polyline fill="none" stroke="black" points="446.5,-380 377.5,-380 "/>
<polyline fill="none" stroke="black" points="446.5,-380 446.5,-364 "/>
<polyline fill="none" stroke="black" points="446.5,-380 448.5,-382 "/>
<text text-anchor="start" x="385.5" y="-370.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;core</text>
</a>
</g>
</g>
<!-- packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge3" class="edge">
<title>packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M351.73,-684.8C383.81,-684.8 422,-684.8 422,-684.8 422,-684.8 422,-388.33 422,-388.33"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="424.1,-388.33 422,-382.33 419.9,-388.33 424.1,-388.33"/>
</g>
<!-- packages/yarnpkg&#45;cli -->
<g id="node5" class="node">
<title>packages/yarnpkg&#45;cli</title>
<g id="a_node5"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-cli" xlink:title="yarnpkg&#45;cli">
<polygon fill="#ccffcc" stroke="black" points="692,-574 632,-574 630,-572 630,-556 690,-556 692,-558 692,-574"/>
<polyline fill="none" stroke="black" points="690,-572 630,-572 "/>
<polyline fill="none" stroke="black" points="690,-572 690,-556 "/>
<polyline fill="none" stroke="black" points="690,-572 692,-574 "/>
<text text-anchor="start" x="638" y="-562.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;cli</text>
</a>
</g>
</g>
<!-- packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge4" class="edge">
<title>packages/acceptance&#45;tests&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M351.55,-682.4C356.04,-682.4 359,-682.4 359,-682.4 359,-682.4 359,-570.4 359,-570.4 359,-570.4 623.82,-570.4 623.82,-570.4"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="623.82,-572.5 629.82,-570.4 623.82,-568.3 623.82,-572.5"/>
</g>
<!-- packages/yarnpkg&#45;libzip -->
<g id="node26" class="node">
<title>packages/yarnpkg&#45;libzip</title>
<g id="a_node26"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-libzip" xlink:title="yarnpkg&#45;libzip">
<polygon fill="#ccffcc" stroke="black" points="986,-650 914,-650 912,-648 912,-632 984,-632 986,-634 986,-650"/>
<polyline fill="none" stroke="black" points="984,-648 912,-648 "/>
<polyline fill="none" stroke="black" points="984,-648 984,-632 "/>
<polyline fill="none" stroke="black" points="984,-648 986,-650 "/>
<text text-anchor="start" x="920" y="-638.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;libzip</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;fslib&#45;&gt;packages/yarnpkg&#45;libzip -->
<g id="edge103" class="edge">
<title>packages/yarnpkg&#45;fslib&#45;&gt;packages/yarnpkg&#45;libzip</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M885,-420.18C885,-462.65 885,-638 885,-638 885,-638 905.77,-638 905.77,-638"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="905.77,-640.1 911.77,-638 905.77,-635.9 905.77,-640.1"/>
</g>
<!-- packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge93" class="edge">
<title>packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M448.8,-378.4C452.54,-378.4 455,-378.4 455,-378.4 455,-378.4 455,-406.5 455,-406.5 455,-406.5 816.83,-406.5 816.83,-406.5"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.83,-408.6 822.83,-406.5 816.83,-404.4 816.83,-408.6"/>
</g>
<!-- packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge95" class="edge">
<title>packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M448.55,-374.8C457.69,-374.8 465,-374.8 465,-374.8 465,-374.8 465,-751.5 465,-751.5 465,-751.5 809.87,-751.5 809.87,-751.5"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="809.87,-753.6 815.87,-751.5 809.87,-749.4 809.87,-753.6"/>
</g>
<!-- packages/plugin&#45;npm -->
<g id="node11" class="node">
<title>packages/plugin&#45;npm</title>
<g id="a_node11"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-npm" xlink:title="plugin&#45;npm">
<polygon fill="#ffccff" stroke="black" points="536,-240 475,-240 473,-238 473,-222 534,-222 536,-224 536,-240"/>
<polyline fill="none" stroke="black" points="534,-238 473,-238 "/>
<polyline fill="none" stroke="black" points="534,-238 534,-222 "/>
<polyline fill="none" stroke="black" points="534,-238 536,-240 "/>
<text text-anchor="start" x="481" y="-228.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;npm</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;core&#45;&gt;packages/plugin&#45;npm -->
<g id="edge97" class="edge">
<title>packages/yarnpkg&#45;core&#45;&gt;packages/plugin&#45;npm</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M439,-363.99C439,-333.45 439,-235.71 439,-235.71 439,-235.71 466.9,-235.71 466.9,-235.71"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="466.9,-237.81 472.9,-235.71 466.9,-233.61 466.9,-237.81"/>
</g>
<!-- packages/plugin&#45;link -->
<g id="node24" class="node">
<title>packages/plugin&#45;link</title>
<g id="a_node24"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-link" xlink:title="plugin&#45;link">
<polygon fill="#ffccff" stroke="black" points="534,-382 477,-382 475,-380 475,-364 532,-364 534,-366 534,-382"/>
<polyline fill="none" stroke="black" points="532,-380 475,-380 "/>
<polyline fill="none" stroke="black" points="532,-380 532,-364 "/>
<polyline fill="none" stroke="black" points="532,-380 534,-382 "/>
<text text-anchor="start" x="483" y="-370.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;link</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;core&#45;&gt;packages/plugin&#45;link -->
<g id="edge98" class="edge">
<title>packages/yarnpkg&#45;core&#45;&gt;packages/plugin&#45;link</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M448.64,-371.2C448.64,-371.2 468.73,-371.2 468.73,-371.2"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="468.73,-373.3 474.73,-371.2 468.73,-369.1 468.73,-373.3"/>
</g>
<!-- packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;libzip -->
<g id="edge94" class="edge">
<title>packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;libzip</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M431,-382.03C431,-423.02 431,-589.6 431,-589.6 431,-589.6 937,-589.6 937,-589.6 937,-589.6 937,-625.57 937,-625.57"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="934.9,-625.57 937,-631.57 939.1,-625.57 934.9,-625.57"/>
</g>
<!-- packages/plugin&#45;pnp -->
<g id="node28" class="node">
<title>packages/plugin&#45;pnp</title>
<g id="a_node28"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-pnp" xlink:title="plugin&#45;pnp">
<polygon fill="#ffccff" stroke="black" points="535,-482 476,-482 474,-480 474,-464 533,-464 535,-466 535,-482"/>
<polyline fill="none" stroke="black" points="533,-480 474,-480 "/>
<polyline fill="none" stroke="black" points="533,-480 533,-464 "/>
<polyline fill="none" stroke="black" points="533,-480 535,-482 "/>
<text text-anchor="start" x="482" y="-470.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;pnp</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;core&#45;&gt;packages/plugin&#45;pnp -->
<g id="edge99" class="edge">
<title>packages/yarnpkg&#45;core&#45;&gt;packages/plugin&#45;pnp</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M440,-382.32C440,-408.02 440,-478 440,-478 440,-478 467.76,-478 467.76,-478"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="467.76,-480.1 473.76,-478 467.76,-475.9 467.76,-480.1"/>
</g>
<!-- packages/yarnpkg&#45;shell -->
<g id="node39" class="node">
<title>packages/yarnpkg&#45;shell</title>
<g id="a_node39"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-shell" xlink:title="yarnpkg&#45;shell">
<polygon fill="#ccffcc" stroke="black" points="791.5,-680 721.5,-680 719.5,-678 719.5,-662 789.5,-662 791.5,-664 791.5,-680"/>
<polyline fill="none" stroke="black" points="789.5,-678 719.5,-678 "/>
<polyline fill="none" stroke="black" points="789.5,-678 789.5,-662 "/>
<polyline fill="none" stroke="black" points="789.5,-678 791.5,-680 "/>
<text text-anchor="start" x="727.5" y="-668.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;shell</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;shell -->
<g id="edge96" class="edge">
<title>packages/yarnpkg&#45;core&#45;&gt;packages/yarnpkg&#45;shell</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M427,-382.15C427,-431.95 427,-668 427,-668 427,-668 713.41,-668 713.41,-668"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="713.41,-670.1 719.41,-668 713.41,-665.9 713.41,-670.1"/>
</g>
<!-- packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge89" class="edge">
<title>packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M685,-555.79C685,-523.55 685,-417.75 685,-417.75 685,-417.75 816.59,-417.75 816.59,-417.75"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.59,-419.85 822.59,-417.75 816.59,-415.65 816.59,-419.85"/>
</g>
<!-- packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge91" class="edge">
<title>packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M692.03,-565C738.31,-565 820,-565 820,-565 820,-565 820,-740.79 820,-740.79"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="817.9,-740.79 820,-746.79 822.1,-740.79 817.9,-740.79"/>
</g>
<!-- packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge88" class="edge">
<title>packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M629.71,-563.2C567.89,-563.2 436,-563.2 436,-563.2 436,-563.2 436,-388.17 436,-388.17"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="438.1,-388.17 436,-382.17 433.9,-388.17 438.1,-388.17"/>
</g>
<!-- packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;libzip -->
<g id="edge90" class="edge">
<title>packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;libzip</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M692.09,-560.5C766.57,-560.5 949,-560.5 949,-560.5 949,-560.5 949,-625.77 949,-625.77"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="946.9,-625.77 949,-631.77 951.1,-625.77 946.9,-625.77"/>
</g>
<!-- packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;shell -->
<g id="edge92" class="edge">
<title>packages/yarnpkg&#45;cli&#45;&gt;packages/yarnpkg&#45;shell</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M692.08,-569.5C697.79,-569.5 702,-569.5 702,-569.5 702,-569.5 702,-666 702,-666 702,-666 713.22,-666 713.22,-666"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="713.22,-668.1 719.22,-666 713.22,-663.9 713.22,-668.1"/>
</g>
<!-- packages/berry&#45;cli -->
<g id="node6" class="node">
<title>packages/berry&#45;cli</title>
<g id="a_node6"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/berry-cli" xlink:title="berry&#45;cli">
<polygon fill="#ccccff" stroke="black" points="98,-868 46,-868 44,-866 44,-850 96,-850 98,-852 98,-868"/>
<polyline fill="none" stroke="black" points="96,-866 44,-866 "/>
<polyline fill="none" stroke="black" points="96,-866 96,-850 "/>
<polyline fill="none" stroke="black" points="96,-866 98,-868 "/>
<text text-anchor="start" x="54" y="-856.8" font-family="Helvetica,sans-Serif" font-size="9.00">berry&#45;cli</text>
</a>
</g>
</g>
<!-- packages/esbuild&#45;plugin&#45;pnp -->
<g id="node7" class="node">
<title>packages/esbuild&#45;plugin&#45;pnp</title>
<g id="a_node7"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/esbuild-plugin-pnp" xlink:title="esbuild&#45;plugin&#45;pnp">
<polygon fill="#ffccff" stroke="black" points="460,-722 368,-722 366,-720 366,-704 458,-704 460,-706 460,-722"/>
<polyline fill="none" stroke="black" points="458,-720 366,-720 "/>
<polyline fill="none" stroke="black" points="458,-720 458,-704 "/>
<polyline fill="none" stroke="black" points="458,-720 460,-722 "/>
<text text-anchor="start" x="374" y="-710.8" font-family="Helvetica,sans-Serif" font-size="9.00">esbuild&#45;plugin&#45;pnp</text>
</a>
</g>
</g>
<!-- packages/eslint&#45;config -->
<g id="node8" class="node">
<title>packages/eslint&#45;config</title>
<g id="a_node8"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/eslint-config" xlink:title="eslint&#45;config">
<polygon fill="#ccccff" stroke="black" points="104,-790 40,-790 38,-788 38,-772 102,-772 104,-774 104,-790"/>
<polyline fill="none" stroke="black" points="102,-788 38,-788 "/>
<polyline fill="none" stroke="black" points="102,-788 102,-772 "/>
<polyline fill="none" stroke="black" points="102,-788 104,-790 "/>
<text text-anchor="start" x="46" y="-778.8" font-family="Helvetica,sans-Serif" font-size="9.00">eslint&#45;config</text>
</a>
</g>
</g>
<!-- packages/gatsby -->
<g id="node9" class="node">
<title>packages/gatsby</title>
<g id="a_node9"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/gatsby" xlink:title="gatsby">
<polygon fill="#ccccff" stroke="black" points="98,-665 46,-665 44,-663 44,-647 96,-647 98,-649 98,-665"/>
<polyline fill="none" stroke="black" points="96,-663 44,-663 "/>
<polyline fill="none" stroke="black" points="96,-663 96,-647 "/>
<polyline fill="none" stroke="black" points="96,-663 98,-665 "/>
<text text-anchor="start" x="57" y="-653.8" font-family="Helvetica,sans-Serif" font-size="9.00">gatsby</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;compat -->
<g id="node10" class="node">
<title>packages/plugin&#45;compat</title>
<g id="a_node10"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-compat" xlink:title="plugin&#45;compat">
<polygon fill="#ffccff" stroke="black" points="232.5,-65 159.5,-65 157.5,-63 157.5,-47 230.5,-47 232.5,-49 232.5,-65"/>
<polyline fill="none" stroke="black" points="230.5,-63 157.5,-63 "/>
<polyline fill="none" stroke="black" points="230.5,-63 230.5,-47 "/>
<polyline fill="none" stroke="black" points="230.5,-63 232.5,-65 "/>
<text text-anchor="start" x="165.5" y="-53.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;compat</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;compat&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge6" class="edge">
<title>packages/plugin&#45;compat&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M232.64,-49.75C376.84,-49.75 886,-49.75 886,-49.75 886,-49.75 886,-395.71 886,-395.71"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="883.9,-395.71 886,-401.71 888.1,-395.71 883.9,-395.71"/>
</g>
<!-- packages/plugin&#45;compat&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge5" class="edge">
<title>packages/plugin&#45;compat&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M232.6,-55.25C298.74,-55.25 429,-55.25 429,-55.25 429,-55.25 429,-357.83 429,-357.83"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="426.9,-357.83 429,-363.83 431.1,-357.83 426.9,-357.83"/>
</g>
<!-- packages/plugin&#45;compat&#45;&gt;packages/plugin&#45;npm -->
<g id="edge7" class="edge">
<title>packages/plugin&#45;compat&#45;&gt;packages/plugin&#45;npm</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M232.7,-52.5C315.32,-52.5 505,-52.5 505,-52.5 505,-52.5 505,-215.9 505,-215.9"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="502.9,-215.9 505,-221.9 507.1,-215.9 502.9,-215.9"/>
</g>
<!-- packages/plugin&#45;patch -->
<g id="node12" class="node">
<title>packages/plugin&#45;patch</title>
<g id="a_node12"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-patch" xlink:title="plugin&#45;patch">
<polygon fill="#ffccff" stroke="black" points="342.5,-76 276.5,-76 274.5,-74 274.5,-58 340.5,-58 342.5,-60 342.5,-76"/>
<polyline fill="none" stroke="black" points="340.5,-74 274.5,-74 "/>
<polyline fill="none" stroke="black" points="340.5,-74 340.5,-58 "/>
<polyline fill="none" stroke="black" points="340.5,-74 342.5,-76 "/>
<text text-anchor="start" x="282.5" y="-64.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;patch</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;compat&#45;&gt;packages/plugin&#45;patch -->
<g id="edge8" class="edge">
<title>packages/plugin&#45;compat&#45;&gt;packages/plugin&#45;patch</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M232.79,-61.5C232.79,-61.5 268.31,-61.5 268.31,-61.5"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="268.31,-63.6 274.31,-61.5 268.31,-59.4 268.31,-63.6"/>
</g>
<!-- packages/plugin&#45;npm&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge46" class="edge">
<title>packages/plugin&#45;npm&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M472.96,-233.43C454.19,-233.43 434,-233.43 434,-233.43 434,-233.43 434,-357.84 434,-357.84"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="431.9,-357.84 434,-363.84 436.1,-357.84 431.9,-357.84"/>
</g>
<!-- packages/plugin&#45;pack -->
<g id="node30" class="node">
<title>packages/plugin&#45;pack</title>
<g id="a_node30"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-pack" xlink:title="plugin&#45;pack">
<polygon fill="#ffccff" stroke="black" points="614,-240 551,-240 549,-238 549,-222 612,-222 614,-224 614,-240"/>
<polyline fill="none" stroke="black" points="612,-238 549,-238 "/>
<polyline fill="none" stroke="black" points="612,-238 612,-222 "/>
<polyline fill="none" stroke="black" points="612,-238 614,-240 "/>
<text text-anchor="start" x="557" y="-228.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;pack</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;npm&#45;&gt;packages/plugin&#45;pack -->
<g id="edge47" class="edge">
<title>packages/plugin&#45;npm&#45;&gt;packages/plugin&#45;pack</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M536.26,-231C536.26,-231 542.81,-231 542.81,-231"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="542.81,-233.1 548.81,-231 542.81,-228.9 542.81,-233.1"/>
</g>
<!-- packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge58" class="edge">
<title>packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.9,-65.2C466.25,-65.2 879,-65.2 879,-65.2 879,-65.2 879,-395.75 879,-395.75"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="876.9,-395.75 879,-401.75 881.1,-395.75 876.9,-395.75"/>
</g>
<!-- packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge56" class="edge">
<title>packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.53,-72.4C376.6,-72.4 424,-72.4 424,-72.4 424,-72.4 424,-357.67 424,-357.67"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="421.9,-357.67 424,-363.67 426.1,-357.67 421.9,-357.67"/>
</g>
<!-- packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge57" class="edge">
<title>packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.51,-68.8C433.73,-68.8 677,-68.8 677,-68.8 677,-68.8 677,-549.96 677,-549.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="674.9,-549.96 677,-555.96 679.1,-549.96 674.9,-549.96"/>
</g>
<!-- packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;libzip -->
<g id="edge59" class="edge">
<title>packages/plugin&#45;patch&#45;&gt;packages/yarnpkg&#45;libzip</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.71,-61.6C477.18,-61.6 962,-61.6 962,-61.6 962,-61.6 962,-625.9 962,-625.9"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="959.9,-625.9 962,-631.9 964.1,-625.9 959.9,-625.9"/>
</g>
<!-- packages/plugin&#45;constraints -->
<g id="node13" class="node">
<title>packages/plugin&#45;constraints</title>
<g id="a_node13"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-constraints" xlink:title="plugin&#45;constraints">
<polygon fill="#ffccff" stroke="black" points="353,-484 266,-484 264,-482 264,-466 351,-466 353,-468 353,-484"/>
<polyline fill="none" stroke="black" points="351,-482 264,-482 "/>
<polyline fill="none" stroke="black" points="351,-482 351,-466 "/>
<polyline fill="none" stroke="black" points="351,-482 353,-484 "/>
<text text-anchor="start" x="272" y="-472.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;constraints</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;constraints&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge10" class="edge">
<title>packages/plugin&#45;constraints&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M352,-465.89C352,-448.71 352,-413.25 352,-413.25 352,-413.25 816.75,-413.25 816.75,-413.25"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.75,-415.35 822.75,-413.25 816.75,-411.15 816.75,-415.35"/>
</g>
<!-- packages/plugin&#45;constraints&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge9" class="edge">
<title>packages/plugin&#45;constraints&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M350,-465.68C350,-440.68 350,-374 350,-374 350,-374 371.45,-374 371.45,-374"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="371.45,-376.1 377.45,-374 371.45,-371.9 371.45,-376.1"/>
</g>
<!-- packages/plugin&#45;constraints&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge11" class="edge">
<title>packages/plugin&#45;constraints&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M353.17,-470C354.95,-470 356,-470 356,-470 356,-470 356,-565 356,-565 356,-565 623.79,-565 623.79,-565"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="623.79,-567.1 629.79,-565 623.79,-562.9 623.79,-567.1"/>
</g>
<!-- packages/plugin&#45;dlx -->
<g id="node14" class="node">
<title>packages/plugin&#45;dlx</title>
<g id="a_node14"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-dlx" xlink:title="plugin&#45;dlx">
<polygon fill="#ffccff" stroke="black" points="337,-634 282,-634 280,-632 280,-616 335,-616 337,-618 337,-634"/>
<polyline fill="none" stroke="black" points="335,-632 280,-632 "/>
<polyline fill="none" stroke="black" points="335,-632 335,-616 "/>
<polyline fill="none" stroke="black" points="335,-632 337,-634 "/>
<text text-anchor="start" x="288" y="-622.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;dlx</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;dlx&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge14" class="edge">
<title>packages/plugin&#45;dlx&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M337.28,-624.4C354.08,-624.4 372,-624.4 372,-624.4 372,-624.4 372,-415.5 372,-415.5 372,-415.5 816.97,-415.5 816.97,-415.5"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.97,-417.6 822.97,-415.5 816.97,-413.4 816.97,-417.6"/>
</g>
<!-- packages/plugin&#45;dlx&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge13" class="edge">
<title>packages/plugin&#45;dlx&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M337.06,-627.6C368,-627.6 413,-627.6 413,-627.6 413,-627.6 413,-388.06 413,-388.06"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="415.1,-388.06 413,-382.06 410.9,-388.06 415.1,-388.06"/>
</g>
<!-- packages/plugin&#45;dlx&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge12" class="edge">
<title>packages/plugin&#45;dlx&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M337.01,-621.2C348.01,-621.2 358,-621.2 358,-621.2 358,-621.2 358,-568.6 358,-568.6 358,-568.6 624,-568.6 624,-568.6"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="624,-570.7 630,-568.6 624,-566.5 624,-570.7"/>
</g>
<!-- packages/plugin&#45;essentials -->
<g id="node15" class="node">
<title>packages/plugin&#45;essentials</title>
<g id="a_node15"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-essentials" xlink:title="plugin&#45;essentials">
<polygon fill="#ffccff" stroke="black" points="238,-398 154,-398 152,-396 152,-380 236,-380 238,-382 238,-398"/>
<polyline fill="none" stroke="black" points="236,-396 152,-396 "/>
<polyline fill="none" stroke="black" points="236,-396 236,-380 "/>
<polyline fill="none" stroke="black" points="236,-396 238,-398 "/>
<text text-anchor="start" x="160" y="-386.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;essentials</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge17" class="edge">
<title>packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M195,-398.46C195,-403.98 195,-409.88 195,-409.88 195,-409.88 816.81,-409.88 816.81,-409.88"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.81,-411.98 822.81,-409.88 816.81,-407.78 816.81,-411.98"/>
</g>
<!-- packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge18" class="edge">
<title>packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M238.03,-391C379.46,-391 821,-391 821,-391 821,-391 821,-740.98 821,-740.98"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="818.9,-740.98 821,-746.98 823.1,-740.98 818.9,-740.98"/>
</g>
<!-- packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge16" class="edge">
<title>packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M238.37,-387.5C293.61,-387.5 382,-387.5 382,-387.5 382,-387.5 382,-386.98 382,-386.98"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="384.1,-388.27 382,-382.27 379.9,-388.27 384.1,-388.27"/>
</g>
<!-- packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge15" class="edge">
<title>packages/plugin&#45;essentials&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M238,-394.5C353.37,-394.5 661,-394.5 661,-394.5 661,-394.5 661,-549.83 661,-549.83"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="658.9,-549.83 661,-555.83 663.1,-549.83 658.9,-549.83"/>
</g>
<!-- packages/plugin&#45;git -->
<g id="node16" class="node">
<title>packages/plugin&#45;git</title>
<g id="a_node16"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-git" xlink:title="plugin&#45;git">
<polygon fill="#ffccff" stroke="black" points="336,-324 283,-324 281,-322 281,-306 334,-306 336,-308 336,-324"/>
<polyline fill="none" stroke="black" points="334,-322 281,-322 "/>
<polyline fill="none" stroke="black" points="334,-322 334,-306 "/>
<polyline fill="none" stroke="black" points="334,-322 336,-324 "/>
<text text-anchor="start" x="289" y="-312.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;git</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;essentials&#45;&gt;packages/plugin&#45;git -->
<g id="edge19" class="edge">
<title>packages/plugin&#45;essentials&#45;&gt;packages/plugin&#45;git</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M195,-380C195,-359.38 195,-310.5 195,-310.5 195,-310.5 274.73,-310.5 274.73,-310.5"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="274.73,-312.6 280.73,-310.5 274.73,-308.4 274.73,-312.6"/>
</g>
<!-- packages/plugin&#45;git&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge25" class="edge">
<title>packages/plugin&#45;git&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M336.17,-312C444.91,-312 837,-312 837,-312 837,-312 837,-395.86 837,-395.86"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="834.9,-395.86 837,-401.86 839.1,-395.86 834.9,-395.86"/>
</g>
<!-- packages/plugin&#45;git&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge24" class="edge">
<title>packages/plugin&#45;git&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M336.31,-318C359.23,-318 388,-318 388,-318 388,-318 388,-357.92 388,-357.92"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="385.9,-357.92 388,-363.92 390.1,-357.92 385.9,-357.92"/>
</g>
<!-- packages/plugin&#45;exec -->
<g id="node17" class="node">
<title>packages/plugin&#45;exec</title>
<g id="a_node17"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-exec" xlink:title="plugin&#45;exec">
<polygon fill="#ffccff" stroke="black" points="341,-178 278,-178 276,-176 276,-160 339,-160 341,-162 341,-178"/>
<polyline fill="none" stroke="black" points="339,-176 276,-176 "/>
<polyline fill="none" stroke="black" points="339,-176 339,-160 "/>
<polyline fill="none" stroke="black" points="339,-176 341,-178 "/>
<text text-anchor="start" x="284" y="-166.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;exec</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;exec&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge21" class="edge">
<title>packages/plugin&#45;exec&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M341.23,-166C460.52,-166 865,-166 865,-166 865,-166 865,-395.99 865,-395.99"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="862.9,-395.99 865,-401.99 867.1,-395.99 862.9,-395.99"/>
</g>
<!-- packages/plugin&#45;exec&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge20" class="edge">
<title>packages/plugin&#45;exec&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M341.28,-172C371.92,-172 413,-172 413,-172 413,-172 413,-357.84 413,-357.84"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="410.9,-357.84 413,-363.84 415.1,-357.84 410.9,-357.84"/>
</g>
<!-- packages/plugin&#45;file -->
<g id="node18" class="node">
<title>packages/plugin&#45;file</title>
<g id="a_node18"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-file" xlink:title="plugin&#45;file">
<polygon fill="#ffccff" stroke="black" points="337,-148 282,-148 280,-146 280,-130 335,-130 337,-132 337,-148"/>
<polyline fill="none" stroke="black" points="335,-146 280,-146 "/>
<polyline fill="none" stroke="black" points="335,-146 335,-130 "/>
<polyline fill="none" stroke="black" points="335,-146 337,-148 "/>
<text text-anchor="start" x="288" y="-136.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;file</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;file&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge23" class="edge">
<title>packages/plugin&#45;file&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M337.22,-134C452.05,-134 872,-134 872,-134 872,-134 872,-395.78 872,-395.78"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="869.9,-395.78 872,-401.78 874.1,-395.78 869.9,-395.78"/>
</g>
<!-- packages/plugin&#45;file&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge22" class="edge">
<title>packages/plugin&#45;file&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M337.24,-143C369.98,-143 419,-143 419,-143 419,-143 419,-357.98 419,-357.98"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="416.9,-357.98 419,-363.98 421.1,-357.98 416.9,-357.98"/>
</g>
<!-- packages/plugin&#45;github -->
<g id="node19" class="node">
<title>packages/plugin&#45;github</title>
<g id="a_node19"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-github" xlink:title="plugin&#45;github">
<polygon fill="#ffccff" stroke="black" points="230.5,-280 161.5,-280 159.5,-278 159.5,-262 228.5,-262 230.5,-264 230.5,-280"/>
<polyline fill="none" stroke="black" points="228.5,-278 159.5,-278 "/>
<polyline fill="none" stroke="black" points="228.5,-278 228.5,-262 "/>
<polyline fill="none" stroke="black" points="228.5,-278 230.5,-280 "/>
<text text-anchor="start" x="167.5" y="-268.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;github</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;github&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge27" class="edge">
<title>packages/plugin&#45;github&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M230.74,-266.5C367.63,-266.5 851,-266.5 851,-266.5 851,-266.5 851,-395.96 851,-395.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="848.9,-395.96 851,-401.96 853.1,-395.96 848.9,-395.96"/>
</g>
<!-- packages/plugin&#45;github&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge26" class="edge">
<title>packages/plugin&#45;github&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M230.86,-271C287.91,-271 393,-271 393,-271 393,-271 393,-357.95 393,-357.95"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="390.9,-357.95 393,-363.95 395.1,-357.95 390.9,-357.95"/>
</g>
<!-- packages/plugin&#45;github&#45;&gt;packages/plugin&#45;git -->
<g id="edge28" class="edge">
<title>packages/plugin&#45;github&#45;&gt;packages/plugin&#45;git</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M230.76,-275.5C264.19,-275.5 309,-275.5 309,-275.5 309,-275.5 309,-299.84 309,-299.84"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="306.9,-299.84 309,-305.84 311.1,-299.84 306.9,-299.84"/>
</g>
<!-- packages/plugin&#45;http -->
<g id="node20" class="node">
<title>packages/plugin&#45;http</title>
<g id="a_node20"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-http" xlink:title="plugin&#45;http">
<polygon fill="#ffccff" stroke="black" points="338.5,-384 280.5,-384 278.5,-382 278.5,-366 336.5,-366 338.5,-368 338.5,-384"/>
<polyline fill="none" stroke="black" points="336.5,-382 278.5,-382 "/>
<polyline fill="none" stroke="black" points="336.5,-382 336.5,-366 "/>
<polyline fill="none" stroke="black" points="336.5,-382 338.5,-384 "/>
<text text-anchor="start" x="286.5" y="-372.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;http</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;http&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge29" class="edge">
<title>packages/plugin&#45;http&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M338.73,-371.33C338.73,-371.33 371.3,-371.33 371.3,-371.33"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="371.3,-373.43 377.3,-371.33 371.3,-369.23 371.3,-373.43"/>
</g>
<!-- packages/plugin&#45;init -->
<g id="node21" class="node">
<title>packages/plugin&#45;init</title>
<g id="a_node21"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-init" xlink:title="plugin&#45;init">
<polygon fill="#ffccff" stroke="black" points="337,-574 282,-574 280,-572 280,-556 335,-556 337,-558 337,-574"/>
<polyline fill="none" stroke="black" points="335,-572 280,-572 "/>
<polyline fill="none" stroke="black" points="335,-572 335,-556 "/>
<polyline fill="none" stroke="black" points="335,-572 337,-574 "/>
<text text-anchor="start" x="288" y="-562.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;init</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;init&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge32" class="edge">
<title>packages/plugin&#45;init&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M309,-555.76C309,-552.67 309,-550 309,-550 309,-550 846,-550 846,-550 846,-550 846,-426.12 846,-426.12"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="848.1,-426.12 846,-420.12 843.9,-426.12 848.1,-426.12"/>
</g>
<!-- packages/plugin&#45;init&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge31" class="edge">
<title>packages/plugin&#45;init&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M337.45,-557.8C364.26,-557.8 400,-557.8 400,-557.8 400,-557.8 400,-388.16 400,-388.16"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="402.1,-388.16 400,-382.16 397.9,-388.16 402.1,-388.16"/>
</g>
<!-- packages/plugin&#45;init&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge30" class="edge">
<title>packages/plugin&#45;init&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M337.05,-566.8C337.05,-566.8 623.93,-566.8 623.93,-566.8"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="623.93,-568.9 629.93,-566.8 623.93,-564.7 623.93,-568.9"/>
</g>
<!-- packages/plugin&#45;interactive&#45;tools -->
<g id="node22" class="node">
<title>packages/plugin&#45;interactive&#45;tools</title>
<g id="a_node22"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-interactive-tools" xlink:title="plugin&#45;interactive&#45;tools">
<polygon fill="#ffccff" stroke="black" points="126,-444 18,-444 16,-442 16,-426 124,-426 126,-428 126,-444"/>
<polyline fill="none" stroke="black" points="124,-442 16,-442 "/>
<polyline fill="none" stroke="black" points="124,-442 124,-426 "/>
<polyline fill="none" stroke="black" points="124,-442 126,-444 "/>
<text text-anchor="start" x="24" y="-432.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;interactive&#45;tools</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge34" class="edge">
<title>packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M121,-444.07C121,-475.81 121,-580 121,-580 121,-580 405,-580 405,-580 405,-580 405,-388.16 405,-388.16"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="407.1,-388.16 405,-382.16 402.9,-388.16 407.1,-388.16"/>
</g>
<!-- packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge33" class="edge">
<title>packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M110,-444.05C110,-448.95 110,-454 110,-454 110,-454 646,-454 646,-454 646,-454 646,-549.92 646,-549.92"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="643.9,-549.92 646,-555.92 648.1,-549.92 643.9,-549.92"/>
</g>
<!-- packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/plugin&#45;essentials -->
<g id="edge36" class="edge">
<title>packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/plugin&#45;essentials</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M120,-425.88C120,-413.26 120,-392 120,-392 120,-392 145.81,-392 145.81,-392"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="145.81,-394.1 151.81,-392 145.81,-389.9 145.81,-394.1"/>
</g>
<!-- packages/yarnpkg&#45;libui -->
<g id="node23" class="node">
<title>packages/yarnpkg&#45;libui</title>
<g id="a_node23"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-libui" xlink:title="yarnpkg&#45;libui">
<polygon fill="#ccffcc" stroke="black" points="343.5,-878 275.5,-878 273.5,-876 273.5,-860 341.5,-860 343.5,-862 343.5,-878"/>
<polyline fill="none" stroke="black" points="341.5,-876 273.5,-876 "/>
<polyline fill="none" stroke="black" points="341.5,-876 341.5,-860 "/>
<polyline fill="none" stroke="black" points="341.5,-876 343.5,-878 "/>
<text text-anchor="start" x="281.5" y="-866.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;libui</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/yarnpkg&#45;libui -->
<g id="edge35" class="edge">
<title>packages/plugin&#45;interactive&#45;tools&#45;&gt;packages/yarnpkg&#45;libui</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M115,-444.39C115,-507.32 115,-865.33 115,-865.33 115,-865.33 267.46,-865.33 267.46,-865.33"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="267.46,-867.43 273.46,-865.33 267.46,-863.23 267.46,-867.43"/>
</g>
<!-- packages/plugin&#45;link&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge38" class="edge">
<title>packages/plugin&#45;link&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M515,-382.19C515,-391.76 515,-405.38 515,-405.38 515,-405.38 816.77,-405.38 816.77,-405.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.77,-407.48 822.77,-405.38 816.77,-403.28 816.77,-407.48"/>
</g>
<!-- packages/plugin&#45;link&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge37" class="edge">
<title>packages/plugin&#45;link&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M474.79,-367.6C474.79,-367.6 454.62,-367.6 454.62,-367.6"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="454.62,-365.5 448.62,-367.6 454.62,-369.7 454.62,-365.5"/>
</g>
<!-- packages/plugin&#45;nm -->
<g id="node25" class="node">
<title>packages/plugin&#45;nm</title>
<g id="a_node25"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-nm" xlink:title="plugin&#45;nm">
<polygon fill="#ffccff" stroke="black" points="224,-670 168,-670 166,-668 166,-652 222,-652 224,-654 224,-670"/>
<polyline fill="none" stroke="black" points="222,-668 166,-668 "/>
<polyline fill="none" stroke="black" points="222,-668 222,-652 "/>
<polyline fill="none" stroke="black" points="222,-668 224,-670 "/>
<text text-anchor="start" x="174" y="-658.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;nm</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge40" class="edge">
<title>packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M224.18,-664C240.27,-664 257,-664 257,-664 257,-664 257,-411 257,-411 257,-411 816.62,-411 816.62,-411"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.62,-413.1 822.62,-411 816.62,-408.9 816.62,-413.1"/>
</g>
<!-- packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge43" class="edge">
<title>packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M195,-670.11C195,-693.89 195,-756 195,-756 195,-756 809.81,-756 809.81,-756"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="809.81,-758.1 815.81,-756 809.81,-753.9 809.81,-758.1"/>
</g>
<!-- packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge39" class="edge">
<title>packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M224.15,-656C284.6,-656 418,-656 418,-656 418,-656 418,-388.1 418,-388.1"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="420.1,-388.1 418,-382.1 415.9,-388.1 420.1,-388.1"/>
</g>
<!-- packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;libzip -->
<g id="edge41" class="edge">
<title>packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;libzip</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M195,-651.77C195,-636.58 195,-608 195,-608 195,-608 925,-608 925,-608 925,-608 925,-625.98 925,-625.98"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="922.9,-625.98 925,-631.98 927.1,-625.98 922.9,-625.98"/>
</g>
<!-- packages/yarnpkg&#45;nm -->
<g id="node27" class="node">
<title>packages/yarnpkg&#45;nm</title>
<g id="a_node27"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-nm" xlink:title="yarnpkg&#45;nm">
<polygon fill="#ccffcc" stroke="black" points="341,-208 278,-208 276,-206 276,-190 339,-190 341,-192 341,-208"/>
<polyline fill="none" stroke="black" points="339,-206 276,-206 "/>
<polyline fill="none" stroke="black" points="339,-206 339,-190 "/>
<polyline fill="none" stroke="black" points="339,-206 341,-208 "/>
<text text-anchor="start" x="284" y="-196.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;nm</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;nm -->
<g id="edge42" class="edge">
<title>packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;nm</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M224.15,-654C239.02,-654 254,-654 254,-654 254,-654 254,-203.5 254,-203.5 254,-203.5 269.85,-203.5 269.85,-203.5"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="269.85,-205.6 275.85,-203.5 269.85,-201.4 269.85,-205.6"/>
</g>
<!-- packages/plugin&#45;nm&#45;&gt;packages/plugin&#45;pnp -->
<g id="edge44" class="edge">
<title>packages/plugin&#45;nm&#45;&gt;packages/plugin&#45;pnp</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M224.15,-658C300.24,-658 499,-658 499,-658 499,-658 499,-488.17 499,-488.17"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="501.1,-488.17 499,-482.17 496.9,-488.17 501.1,-488.17"/>
</g>
<!-- packages/yarnpkg&#45;pnp -->
<g id="node29" class="node">
<title>packages/yarnpkg&#45;pnp</title>
<g id="a_node29"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-pnp" xlink:title="yarnpkg&#45;pnp">
<polygon fill="#ccffcc" stroke="black" points="695,-636 629,-636 627,-634 627,-618 693,-618 695,-620 695,-636"/>
<polyline fill="none" stroke="black" points="693,-634 627,-634 "/>
<polyline fill="none" stroke="black" points="693,-634 693,-618 "/>
<polyline fill="none" stroke="black" points="693,-634 695,-636 "/>
<text text-anchor="start" x="635" y="-624.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;pnp</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;pnp -->
<g id="edge45" class="edge">
<title>packages/plugin&#45;nm&#45;&gt;packages/yarnpkg&#45;pnp</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M224.15,-660C326.17,-660 661,-660 661,-660 661,-660 661,-642.02 661,-642.02"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="663.1,-642.02 661,-636.02 658.9,-642.02 663.1,-642.02"/>
</g>
<!-- packages/yarnpkg&#45;nm&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge106" class="edge">
<title>packages/yarnpkg&#45;nm&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M341.23,-196C459.53,-196 858,-196 858,-196 858,-196 858,-395.76 858,-395.76"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="855.9,-395.76 858,-401.76 860.1,-395.76 855.9,-395.76"/>
</g>
<!-- packages/yarnpkg&#45;nm&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge105" class="edge">
<title>packages/yarnpkg&#45;nm&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M341.08,-202C370.1,-202 408,-202 408,-202 408,-202 408,-357.81 408,-357.81"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="405.9,-357.81 408,-363.81 410.1,-357.81 405.9,-357.81"/>
</g>
<!-- packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge61" class="edge">
<title>packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M495,-463.94C495,-448.01 495,-416.62 495,-416.62 495,-416.62 816.74,-416.62 816.74,-416.62"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.74,-418.73 822.74,-416.62 816.74,-414.53 816.74,-418.73"/>
</g>
<!-- packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge60" class="edge">
<title>packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M473.7,-474C459.19,-474 445,-474 445,-474 445,-474 445,-388.32 445,-388.32"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="447.1,-388.32 445,-382.32 442.9,-388.32 447.1,-388.32"/>
</g>
<!-- packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge62" class="edge">
<title>packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M523,-482.27C523,-504.61 523,-559.6 523,-559.6 523,-559.6 623.69,-559.6 623.69,-559.6"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="623.69,-561.7 629.69,-559.6 623.69,-557.5 623.69,-561.7"/>
</g>
<!-- packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;pnp -->
<g id="edge63" class="edge">
<title>packages/plugin&#45;pnp&#45;&gt;packages/yarnpkg&#45;pnp</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M511,-482.4C511,-516.37 511,-630.8 511,-630.8 511,-630.8 620.96,-630.8 620.96,-630.8"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="620.96,-632.9 626.96,-630.8 620.96,-628.7 620.96,-632.9"/>
</g>
<!-- packages/yarnpkg&#45;pnp&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge107" class="edge">
<title>packages/yarnpkg&#45;pnp&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M695.1,-622.67C752.44,-622.67 862,-622.67 862,-622.67 862,-622.67 862,-426.1 862,-426.1"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="864.1,-426.1 862,-420.1 859.9,-426.1 864.1,-426.1"/>
</g>
<!-- packages/yarnpkg&#45;pnp&#45;&gt;packages/yarnpkg&#45;libzip -->
<g id="edge108" class="edge">
<title>packages/yarnpkg&#45;pnp&#45;&gt;packages/yarnpkg&#45;libzip</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M695.09,-627.33C776.22,-627.33 974,-627.33 974,-627.33 974,-627.33 974,-627.8 974,-627.8"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="971.9,-625.96 974,-631.96 976.1,-625.96 971.9,-625.96"/>
</g>
<!-- packages/plugin&#45;pack&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge55" class="edge">
<title>packages/plugin&#45;pack&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M601,-240.31C601,-276.3 601,-404.25 601,-404.25 601,-404.25 816.91,-404.25 816.91,-404.25"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.91,-406.35 822.91,-404.25 816.91,-402.15 816.91,-406.35"/>
</g>
<!-- packages/plugin&#45;pack&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge53" class="edge">
<title>packages/plugin&#45;pack&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M588,-240.08C588,-246.76 588,-254.67 588,-254.67 588,-254.67 444,-254.67 444,-254.67 444,-254.67 444,-357.71 444,-357.71"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="441.9,-357.71 444,-363.71 446.1,-357.71 441.9,-357.71"/>
</g>
<!-- packages/plugin&#45;pack&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge54" class="edge">
<title>packages/plugin&#45;pack&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M614.08,-231C638.96,-231 669,-231 669,-231 669,-231 669,-549.72 669,-549.72"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="666.9,-549.72 669,-555.72 671.1,-549.72 666.9,-549.72"/>
</g>
<!-- packages/plugin&#45;npm&#45;cli -->
<g id="node31" class="node">
<title>packages/plugin&#45;npm&#45;cli</title>
<g id="a_node31"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-npm-cli" xlink:title="plugin&#45;npm&#45;cli">
<polygon fill="#ffccff" stroke="black" points="346,-238 273,-238 271,-236 271,-220 344,-220 346,-222 346,-238"/>
<polyline fill="none" stroke="black" points="344,-236 271,-236 "/>
<polyline fill="none" stroke="black" points="344,-236 344,-220 "/>
<polyline fill="none" stroke="black" points="344,-236 346,-238 "/>
<text text-anchor="start" x="279" y="-226.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;npm&#45;cli</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;npm&#45;cli&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge51" class="edge">
<title>packages/plugin&#45;npm&#45;cli&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M346.03,-231.14C351.32,-231.14 355,-231.14 355,-231.14 355,-231.14 355,-407.62 355,-407.62 355,-407.62 816.96,-407.62 816.96,-407.62"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.96,-409.73 822.96,-407.62 816.96,-405.53 816.96,-409.73"/>
</g>
<!-- packages/plugin&#45;npm&#45;cli&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge49" class="edge">
<title>packages/plugin&#45;npm&#45;cli&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M346.2,-228.86C370.66,-228.86 398,-228.86 398,-228.86 398,-228.86 398,-357.98 398,-357.98"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="395.9,-357.98 398,-363.98 400.1,-357.98 395.9,-357.98"/>
</g>
<!-- packages/plugin&#45;npm&#45;cli&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge48" class="edge">
<title>packages/plugin&#45;npm&#45;cli&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M346.13,-226.57C393.57,-226.57 469,-226.57 469,-226.57 469,-226.57 469,-561.4 469,-561.4 469,-561.4 623.72,-561.4 623.72,-561.4"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="623.72,-563.5 629.72,-561.4 623.72,-559.3 623.72,-563.5"/>
</g>
<!-- packages/plugin&#45;npm&#45;cli&#45;&gt;packages/plugin&#45;npm -->
<g id="edge50" class="edge">
<title>packages/plugin&#45;npm&#45;cli&#45;&gt;packages/plugin&#45;npm</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M346.29,-224.29C346.29,-224.29 466.97,-224.29 466.97,-224.29"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="466.97,-226.39 472.97,-224.29 466.97,-222.19 466.97,-226.39"/>
</g>
<!-- packages/plugin&#45;npm&#45;cli&#45;&gt;packages/plugin&#45;pack -->
<g id="edge52" class="edge">
<title>packages/plugin&#45;npm&#45;cli&#45;&gt;packages/plugin&#45;pack</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M340,-238.17C340,-242.75 340,-247.33 340,-247.33 340,-247.33 575,-247.33 575,-247.33 575,-247.33 575,-246.31 575,-246.31"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="577.1,-246.31 575,-240.31 572.9,-246.31 577.1,-246.31"/>
</g>
<!-- packages/plugin&#45;pnpm -->
<g id="node32" class="node">
<title>packages/plugin&#45;pnpm</title>
<g id="a_node32"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-pnpm" xlink:title="plugin&#45;pnpm">
<polygon fill="#ffccff" stroke="black" points="342.5,-514 276.5,-514 274.5,-512 274.5,-496 340.5,-496 342.5,-498 342.5,-514"/>
<polyline fill="none" stroke="black" points="340.5,-512 274.5,-512 "/>
<polyline fill="none" stroke="black" points="340.5,-512 340.5,-496 "/>
<polyline fill="none" stroke="black" points="340.5,-512 342.5,-514 "/>
<text text-anchor="start" x="282.5" y="-502.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;pnpm</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;pnpm&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge65" class="edge">
<title>packages/plugin&#45;pnpm&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.78,-509.5C459.02,-509.5 831,-509.5 831,-509.5 831,-509.5 831,-426.09 831,-426.09"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="833.1,-426.09 831,-420.09 828.9,-426.09 833.1,-426.09"/>
</g>
<!-- packages/plugin&#45;pnpm&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge64" class="edge">
<title>packages/plugin&#45;pnpm&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.53,-500.5C365.26,-500.5 391,-500.5 391,-500.5 391,-500.5 391,-388.17 391,-388.17"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="393.1,-388.17 391,-382.17 388.9,-388.17 393.1,-388.17"/>
</g>
<!-- packages/plugin&#45;pnpm&#45;&gt;packages/plugin&#45;pnp -->
<g id="edge66" class="edge">
<title>packages/plugin&#45;pnpm&#45;&gt;packages/plugin&#45;pnp</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M342.92,-505C394.79,-505 487,-505 487,-505 487,-505 487,-488.08 487,-488.08"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="489.1,-488.08 487,-482.08 484.9,-488.08 489.1,-488.08"/>
</g>
<!-- packages/plugin&#45;stage -->
<g id="node33" class="node">
<title>packages/plugin&#45;stage</title>
<g id="a_node33"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-stage" xlink:title="plugin&#45;stage">
<polygon fill="#ffccff" stroke="black" points="342.5,-604 276.5,-604 274.5,-602 274.5,-586 340.5,-586 342.5,-588 342.5,-604"/>
<polyline fill="none" stroke="black" points="340.5,-602 274.5,-602 "/>
<polyline fill="none" stroke="black" points="340.5,-602 340.5,-586 "/>
<polyline fill="none" stroke="black" points="340.5,-602 342.5,-604 "/>
<text text-anchor="start" x="282.5" y="-592.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;stage</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;stage&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge69" class="edge">
<title>packages/plugin&#45;stage&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.62,-600.4C462.05,-600.4 854,-600.4 854,-600.4 854,-600.4 854,-426.14 854,-426.14"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="856.1,-426.14 854,-420.14 851.9,-426.14 856.1,-426.14"/>
</g>
<!-- packages/plugin&#45;stage&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge68" class="edge">
<title>packages/plugin&#45;stage&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.52,-593.2C371.68,-593.2 409,-593.2 409,-593.2 409,-593.2 409,-388.18 409,-388.18"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="411.1,-388.18 409,-382.18 406.9,-388.18 411.1,-388.18"/>
</g>
<!-- packages/plugin&#45;stage&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge67" class="edge">
<title>packages/plugin&#45;stage&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M342.59,-596.8C429.22,-596.8 651,-596.8 651,-596.8 651,-596.8 651,-580.03 651,-580.03"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="653.1,-580.03 651,-574.03 648.9,-580.03 653.1,-580.03"/>
</g>
<!-- packages/plugin&#45;typescript -->
<g id="node34" class="node">
<title>packages/plugin&#45;typescript</title>
<g id="a_node34"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-typescript" xlink:title="plugin&#45;typescript">
<polygon fill="#ffccff" stroke="black" points="113,-302 31,-302 29,-300 29,-284 111,-284 113,-286 113,-302"/>
<polyline fill="none" stroke="black" points="111,-300 29,-300 "/>
<polyline fill="none" stroke="black" points="111,-300 111,-284 "/>
<polyline fill="none" stroke="black" points="111,-300 113,-302 "/>
<text text-anchor="start" x="37" y="-290.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;typescript</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;typescript&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge71" class="edge">
<title>packages/plugin&#45;typescript&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M113.11,-290C274.42,-290 844,-290 844,-290 844,-290 844,-395.91 844,-395.91"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="841.9,-395.91 844,-401.91 846.1,-395.91 841.9,-395.91"/>
</g>
<!-- packages/plugin&#45;typescript&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge70" class="edge">
<title>packages/plugin&#45;typescript&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M113.07,-296C190.56,-296 348,-296 348,-296 348,-296 348,-368.67 348,-368.67 348,-368.67 371.46,-368.67 371.46,-368.67"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="371.46,-370.77 377.46,-368.67 371.46,-366.57 371.46,-370.77"/>
</g>
<!-- packages/plugin&#45;typescript&#45;&gt;packages/plugin&#45;essentials -->
<g id="edge72" class="edge">
<title>packages/plugin&#45;typescript&#45;&gt;packages/plugin&#45;essentials</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M71,-302.26C71,-325.78 71,-386 71,-386 71,-386 145.98,-386 145.98,-386"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="145.98,-388.1 151.98,-386 145.98,-383.9 145.98,-388.1"/>
</g>
<!-- packages/plugin&#45;version -->
<g id="node35" class="node">
<title>packages/plugin&#45;version</title>
<g id="a_node35"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-version" xlink:title="plugin&#45;version">
<polygon fill="#ffccff" stroke="black" points="232.5,-835 159.5,-835 157.5,-833 157.5,-817 230.5,-817 232.5,-819 232.5,-835"/>
<polyline fill="none" stroke="black" points="230.5,-833 157.5,-833 "/>
<polyline fill="none" stroke="black" points="230.5,-833 230.5,-817 "/>
<polyline fill="none" stroke="black" points="230.5,-833 232.5,-835 "/>
<text text-anchor="start" x="165.5" y="-823.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;version</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge75" class="edge">
<title>packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M232.81,-824.2C248.01,-824.2 262,-824.2 262,-824.2 262,-824.2 262,-412.12 262,-412.12 262,-412.12 816.91,-412.12 816.91,-412.12"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.91,-414.23 822.91,-412.12 816.91,-410.03 816.91,-414.23"/>
</g>
<!-- packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge76" class="edge">
<title>packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M229,-816.89C229,-798.89 229,-760.5 229,-760.5 229,-760.5 809.78,-760.5 809.78,-760.5"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="809.78,-762.6 815.78,-760.5 809.78,-758.4 809.78,-762.6"/>
</g>
<!-- packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge74" class="edge">
<title>packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M232.51,-827.8C282.3,-827.8 364,-827.8 364,-827.8 364,-827.8 364,-379.33 364,-379.33 364,-379.33 371.39,-379.33 371.39,-379.33"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="371.39,-381.43 377.39,-379.33 371.39,-377.23 371.39,-381.43"/>
</g>
<!-- packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge73" class="edge">
<title>packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M232.55,-831.4C326.09,-831.4 562,-831.4 562,-831.4 562,-831.4 562,-572.2 562,-572.2 562,-572.2 623.95,-572.2 623.95,-572.2"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="623.95,-574.3 629.95,-572.2 623.95,-570.1 623.95,-574.3"/>
</g>
<!-- packages/plugin&#45;version&#45;&gt;packages/plugin&#45;git -->
<g id="edge77" class="edge">
<title>packages/plugin&#45;version&#45;&gt;packages/plugin&#45;git</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M232.6,-820.6C246.53,-820.6 259,-820.6 259,-820.6 259,-820.6 259,-319.5 259,-319.5 259,-319.5 274.86,-319.5 274.86,-319.5"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="274.86,-321.6 280.86,-319.5 274.86,-317.4 274.86,-321.6"/>
</g>
<!-- packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;libui -->
<g id="edge78" class="edge">
<title>packages/plugin&#45;version&#45;&gt;packages/yarnpkg&#45;libui</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M195,-835.25C195,-846.11 195,-862.67 195,-862.67 195,-862.67 267.21,-862.67 267.21,-862.67"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="267.21,-864.77 273.21,-862.67 267.21,-860.57 267.21,-864.77"/>
</g>
<!-- packages/plugin&#45;workspace&#45;tools -->
<g id="node36" class="node">
<title>packages/plugin&#45;workspace&#45;tools</title>
<g id="a_node36"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/plugin-workspace-tools" xlink:title="plugin&#45;workspace&#45;tools">
<polygon fill="#ffccff" stroke="black" points="251,-442 141,-442 139,-440 139,-424 249,-424 251,-426 251,-442"/>
<polyline fill="none" stroke="black" points="249,-440 139,-440 "/>
<polyline fill="none" stroke="black" points="249,-440 249,-424 "/>
<polyline fill="none" stroke="black" points="249,-440 251,-442 "/>
<text text-anchor="start" x="147" y="-430.8" font-family="Helvetica,sans-Serif" font-size="9.00">plugin&#45;workspace&#45;tools</text>
</a>
</g>
</g>
<!-- packages/plugin&#45;workspace&#45;tools&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge80" class="edge">
<title>packages/plugin&#45;workspace&#45;tools&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M251.05,-430C307.72,-430 387,-430 387,-430 387,-430 387,-388.16 387,-388.16"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="389.1,-388.16 387,-382.16 384.9,-388.16 389.1,-388.16"/>
</g>
<!-- packages/plugin&#45;workspace&#45;tools&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge79" class="edge">
<title>packages/plugin&#45;workspace&#45;tools&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M251.28,-436C373.85,-436 654,-436 654,-436 654,-436 654,-549.72 654,-549.72"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="651.9,-549.72 654,-555.72 656.1,-549.72 651.9,-549.72"/>
</g>
<!-- packages/plugin&#45;workspace&#45;tools&#45;&gt;packages/plugin&#45;git -->
<g id="edge81" class="edge">
<title>packages/plugin&#45;workspace&#45;tools&#45;&gt;packages/plugin&#45;git</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M247,-423.74C247,-395.92 247,-315 247,-315 247,-315 274.99,-315 274.99,-315"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="274.99,-317.1 280.99,-315 274.99,-312.9 274.99,-317.1"/>
</g>
<!-- packages/vscode&#45;zipfs -->
<g id="node37" class="node">
<title>packages/vscode&#45;zipfs</title>
<g id="a_node37"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/vscode-zipfs" xlink:title="vscode&#45;zipfs">
<polygon fill="#ccccff" stroke="black" points="789.5,-650 723.5,-650 721.5,-648 721.5,-632 787.5,-632 789.5,-634 789.5,-650"/>
<polyline fill="none" stroke="black" points="787.5,-648 721.5,-648 "/>
<polyline fill="none" stroke="black" points="787.5,-648 787.5,-632 "/>
<polyline fill="none" stroke="black" points="787.5,-648 789.5,-650 "/>
<text text-anchor="start" x="729.5" y="-638.8" font-family="Helvetica,sans-Serif" font-size="9.00">vscode&#45;zipfs</text>
</a>
</g>
</g>
<!-- packages/vscode&#45;zipfs&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge82" class="edge">
<title>packages/vscode&#45;zipfs&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M756,-631.74C756,-589.7 756,-418.88 756,-418.88 756,-418.88 816.85,-418.88 816.85,-418.88"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.85,-420.98 822.85,-418.88 816.85,-416.78 816.85,-420.98"/>
</g>
<!-- packages/vscode&#45;zipfs&#45;&gt;packages/yarnpkg&#45;libzip -->
<g id="edge83" class="edge">
<title>packages/vscode&#45;zipfs&#45;&gt;packages/yarnpkg&#45;libzip</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M789.65,-644C789.65,-644 905.9,-644 905.9,-644"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="905.9,-646.1 911.9,-644 905.9,-641.9 905.9,-646.1"/>
</g>
<!-- packages/yarnpkg&#45;builder -->
<g id="node38" class="node">
<title>packages/yarnpkg&#45;builder</title>
<g id="a_node38"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-builder" xlink:title="yarnpkg&#45;builder">
<polygon fill="#ccffcc" stroke="black" points="349,-722 270,-722 268,-720 268,-704 347,-704 349,-706 349,-722"/>
<polyline fill="none" stroke="black" points="347,-720 268,-720 "/>
<polyline fill="none" stroke="black" points="347,-720 347,-704 "/>
<polyline fill="none" stroke="black" points="347,-720 349,-722 "/>
<text text-anchor="start" x="276" y="-710.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;builder</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;builder&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge87" class="edge">
<title>packages/yarnpkg&#45;builder&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M349.05,-711.2C356.51,-711.2 362,-711.2 362,-711.2 362,-711.2 362,-414.38 362,-414.38 362,-414.38 816.66,-414.38 816.66,-414.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.66,-416.48 822.66,-414.38 816.66,-412.28 816.66,-416.48"/>
</g>
<!-- packages/yarnpkg&#45;builder&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge85" class="edge">
<title>packages/yarnpkg&#45;builder&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M349.09,-707.6C356,-707.6 361,-707.6 361,-707.6 361,-707.6 361,-376.67 361,-376.67 361,-376.67 371.45,-376.67 371.45,-376.67"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="371.45,-378.77 377.45,-376.67 371.45,-374.57 371.45,-378.77"/>
</g>
<!-- packages/yarnpkg&#45;builder&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge84" class="edge">
<title>packages/yarnpkg&#45;builder&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M349.26,-714.8C358.17,-714.8 365,-714.8 365,-714.8 365,-714.8 365,-612 365,-612 365,-612 672,-612 672,-612 672,-612 672,-580.06 672,-580.06"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="674.1,-580.06 672,-574.06 669.9,-580.06 674.1,-580.06"/>
</g>
<!-- packages/yarnpkg&#45;builder&#45;&gt;packages/esbuild&#45;plugin&#45;pnp -->
<g id="edge86" class="edge">
<title>packages/yarnpkg&#45;builder&#45;&gt;packages/esbuild&#45;plugin&#45;pnp</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M349.2,-718.4C349.2,-718.4 359.99,-718.4 359.99,-718.4"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="359.99,-720.5 365.99,-718.4 359.99,-716.3 359.99,-720.5"/>
</g>
<!-- packages/yarnpkg&#45;shell&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge115" class="edge">
<title>packages/yarnpkg&#45;shell&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M791.72,-668C824.94,-668 869,-668 869,-668 869,-668 869,-426.15 869,-426.15"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="871.1,-426.15 869,-420.15 866.9,-426.15 871.1,-426.15"/>
</g>
<!-- packages/yarnpkg&#45;shell&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge116" class="edge">
<title>packages/yarnpkg&#45;shell&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M791.7,-674C805.96,-674 819,-674 819,-674 819,-674 819,-740.91 819,-740.91"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.9,-740.91 819,-746.91 821.1,-740.91 816.9,-740.91"/>
</g>
<!-- packages/yarnpkg&#45;doctor -->
<g id="node40" class="node">
<title>packages/yarnpkg&#45;doctor</title>
<g id="a_node40"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-doctor" xlink:title="yarnpkg&#45;doctor">
<polygon fill="#ccffcc" stroke="black" points="347.5,-544 271.5,-544 269.5,-542 269.5,-526 345.5,-526 347.5,-528 347.5,-544"/>
<polyline fill="none" stroke="black" points="345.5,-542 269.5,-542 "/>
<polyline fill="none" stroke="black" points="345.5,-542 345.5,-526 "/>
<polyline fill="none" stroke="black" points="345.5,-542 347.5,-544 "/>
<text text-anchor="start" x="277.5" y="-532.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;doctor</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;doctor&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge102" class="edge">
<title>packages/yarnpkg&#45;doctor&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M347.51,-535C470.02,-535 839,-535 839,-535 839,-535 839,-426.32 839,-426.32"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="841.1,-426.32 839,-420.32 836.9,-426.32 841.1,-426.32"/>
</g>
<!-- packages/yarnpkg&#45;doctor&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge100" class="edge">
<title>packages/yarnpkg&#45;doctor&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M347.64,-530.5C370.94,-530.5 396,-530.5 396,-530.5 396,-530.5 396,-388.38 396,-388.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="398.1,-388.38 396,-382.38 393.9,-388.38 398.1,-388.38"/>
</g>
<!-- packages/yarnpkg&#45;doctor&#45;&gt;packages/yarnpkg&#45;cli -->
<g id="edge101" class="edge">
<title>packages/yarnpkg&#45;doctor&#45;&gt;packages/yarnpkg&#45;cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M347.59,-539.5C434.87,-539.5 638,-539.5 638,-539.5 638,-539.5 638,-549.79 638,-549.79"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="635.9,-549.79 638,-555.79 640.1,-549.79 635.9,-549.79"/>
</g>
<!-- packages/yarnpkg&#45;json&#45;proxy -->
<g id="node41" class="node">
<title>packages/yarnpkg&#45;json&#45;proxy</title>
<g id="a_node41"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-json-proxy" xlink:title="yarnpkg&#45;json&#45;proxy">
<polygon fill="#ccffcc" stroke="black" points="803,-156 710,-156 708,-154 708,-138 801,-138 803,-140 803,-156"/>
<polyline fill="none" stroke="black" points="801,-154 708,-154 "/>
<polyline fill="none" stroke="black" points="801,-154 801,-138 "/>
<polyline fill="none" stroke="black" points="801,-154 803,-156 "/>
<text text-anchor="start" x="716" y="-144.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;json&#45;proxy</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;json&#45;proxy&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge104" class="edge">
<title>packages/yarnpkg&#45;json&#45;proxy&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M798,-156.12C798,-201.74 798,-403.12 798,-403.12 798,-403.12 816.89,-403.12 816.89,-403.12"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.89,-405.23 822.89,-403.12 816.89,-401.03 816.89,-405.23"/>
</g>
<!-- packages/yarnpkg&#45;pnpify -->
<g id="node42" class="node">
<title>packages/yarnpkg&#45;pnpify</title>
<g id="a_node42"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-pnpify" xlink:title="yarnpkg&#45;pnpify">
<polygon fill="#ccffcc" stroke="black" points="233.5,-208 158.5,-208 156.5,-206 156.5,-190 231.5,-190 233.5,-192 233.5,-208"/>
<polyline fill="none" stroke="black" points="231.5,-206 156.5,-206 "/>
<polyline fill="none" stroke="black" points="231.5,-206 231.5,-190 "/>
<polyline fill="none" stroke="black" points="231.5,-206 233.5,-208 "/>
<text text-anchor="start" x="164.5" y="-196.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;pnpify</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;pnpify&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge109" class="edge">
<title>packages/yarnpkg&#45;pnpify&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M233.75,-199C239.2,-199 243,-199 243,-199 243,-199 243,-408.75 243,-408.75 243,-408.75 816.7,-408.75 816.7,-408.75"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="816.7,-410.85 822.7,-408.75 816.7,-406.65 816.7,-410.85"/>
</g>
<!-- packages/yarnpkg&#45;pnpify&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge111" class="edge">
<title>packages/yarnpkg&#45;pnpify&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M195,-208.24C195,-211.33 195,-214 195,-214 195,-214 403,-214 403,-214 403,-214 403,-358 403,-358"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="400.9,-358 403,-364 405.1,-358 400.9,-358"/>
</g>
<!-- packages/yarnpkg&#45;pnpify&#45;&gt;packages/yarnpkg&#45;nm -->
<g id="edge110" class="edge">
<title>packages/yarnpkg&#45;pnpify&#45;&gt;packages/yarnpkg&#45;nm</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M233.74,-194.5C233.74,-194.5 269.97,-194.5 269.97,-194.5"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="269.97,-196.6 275.97,-194.5 269.97,-192.4 269.97,-196.6"/>
</g>
<!-- packages/yarnpkg&#45;sdks -->
<g id="node43" class="node">
<title>packages/yarnpkg&#45;sdks</title>
<g id="a_node43"><a xlink:href="https://github.com/yarnpkg/berry/tree/master/packages/yarnpkg-sdks" xlink:title="yarnpkg&#45;sdks">
<polygon fill="#ccffcc" stroke="black" points="344,-354 275,-354 273,-352 273,-336 342,-336 344,-338 344,-354"/>
<polyline fill="none" stroke="black" points="342,-352 273,-352 "/>
<polyline fill="none" stroke="black" points="342,-352 342,-336 "/>
<polyline fill="none" stroke="black" points="342,-352 344,-354 "/>
<text text-anchor="start" x="281" y="-342.8" font-family="Helvetica,sans-Serif" font-size="9.00">yarnpkg&#45;sdks</text>
</a>
</g>
</g>
<!-- packages/yarnpkg&#45;sdks&#45;&gt;packages/yarnpkg&#45;fslib -->
<g id="edge113" class="edge">
<title>packages/yarnpkg&#45;sdks&#45;&gt;packages/yarnpkg&#45;fslib</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M344.34,-340.5C462.17,-340.5 830,-340.5 830,-340.5 830,-340.5 830,-395.78 830,-395.78"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="827.9,-395.78 830,-401.78 832.1,-395.78 827.9,-395.78"/>
</g>
<!-- packages/yarnpkg&#45;sdks&#45;&gt;packages/yarnpkg&#45;parsers -->
<g id="edge114" class="edge">
<title>packages/yarnpkg&#45;sdks&#45;&gt;packages/yarnpkg&#45;parsers</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M344.2,-345C460.65,-345 822,-345 822,-345 822,-345 822,-740.64 822,-740.64"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="819.9,-740.64 822,-746.64 824.1,-740.64 819.9,-740.64"/>
</g>
<!-- packages/yarnpkg&#45;sdks&#45;&gt;packages/yarnpkg&#45;core -->
<g id="edge112" class="edge">
<title>packages/yarnpkg&#45;sdks&#45;&gt;packages/yarnpkg&#45;core</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M344,-349.5C363.19,-349.5 383,-349.5 383,-349.5 383,-349.5 383,-357.98 383,-357.98"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="380.9,-357.98 383,-363.98 385.1,-357.98 380.9,-357.98"/>
</g>
</g>
</svg>
<script>document.addEventListener("contextmenu", getSelectHandler(title2ElementMap));
document.addEventListener("mouseover", getHoverHandler(title2ElementMap));
document.addEventListener("keydown", keyboardEventHandler);

var gMode = new Mode();

var title2ElementMap = (function makeElementMap() {
  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  return new Title2ElementMap(edges, nodes);
})();

function getHoverHandler() {
  /** @type {string} */
  var currentHighlightedTitle;

  /** @param {MouseEvent} pMouseEvent */
  return function hoverHighlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (
      !(currentHighlightedTitle === closestTitleText) &&
      gMode.get() === gMode.HOVER
    ) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      title2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

function getSelectHandler() {
  /** @type {string} */
  var currentHighlightedTitle;

  /** @param {MouseEvent} pMouseEvent */
  return function selectHighlightHandler(pMouseEvent) {
    pMouseEvent.preventDefault();

    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (!!closestNodeOrEdge) {
      gMode.setToSelect();
    } else {
      gMode.setToHover();
    }
    if (!(currentHighlightedTitle === closestTitleText)) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      title2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}
function Mode() {
  var HOVER = 1;
  var SELECT = 2;

  function setToHover() {
    this._mode = HOVER;
  }
  function setToSelect() {
    this._mode = SELECT;
  }

  function get() {
    return this._mode || HOVER;
  }

  return {
    HOVER: HOVER,
    SELECT: SELECT,
    setToHover: setToHover,
    setToSelect: setToSelect,
    get: get,
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

function resetNodesAndEdges() {
  nodeListToArray(document.querySelectorAll(".current")).forEach(
    removeHighlight
  );
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}

var hints = {
  HIDDEN: 1,
  SHOWN: 2,
  state: this.HIDDEN,
  show: function () {
    document.getElementById("hints").removeAttribute("style");
    hints.state = hints.SHOWN;
  },
  hide: function () {
    document.getElementById("hints").style = "display:none";
    hints.state = hints.HIDDEN;
  },
  toggle: function () {
    if ((hints.state || hints.HIDDEN) === hints.HIDDEN) {
      hints.show();
    } else {
      hints.hide();
    }
  },
};

/** @param {KeyboardEvent} pKeyboardEvent */
function keyboardEventHandler(pKeyboardEvent) {
  if (pKeyboardEvent.key === "Escape") {
    resetNodesAndEdges();
    gMode.setToHover();
    hints.hide();
  }
  if (pKeyboardEvent.key === "F1") {
    pKeyboardEvent.preventDefault();
    hints.toggle();
  }
}
document.getElementById("close-hints").addEventListener("click", hints.hide);
document.getElementById("button_help").addEventListener("click", hints.toggle);
</script>  </body>
</html>
